'use strict';
const db = uniCloud.database();
const businessDBName = 'zhy_business_info';
const userDBName = 'zhy_user_info';

//得到标准时区的时间的函数
//参数i为时区值数字，比如北京为东八区则输进8,西5输入-5
/* function getLocalTime(i) {
	if (typeof i !== 'number') return;
	var d = new Date();
	//得到1970年一月一日到现在的秒数 
	var len = d.getTime();
	//本地时间与GMT时间的时间偏移差(注意：GMT这是UTC的民间名称。GMT=UTC）
	var offset = d.getTimezoneOffset() * 60000;
	//得到现在的格林尼治时间
	var utcTime = len + offset;
	return new Date(utcTime + 3600000 * i);
} */
// business和userinfo
exports.main = async (event, context) => {
	//event为客户端上传的参数
	// console.log(JSON.stringify(event));
	// console.log(JSON.stringify(context));
	if (event.operateType == 1) {
		// 查找不存在添加到user表中
		return getAndSetUserAndBSInfo(event, context)
	}
	let info = {
		userType: 1,
		userInfo: {}
	}
	// 先查询商户-userinfo肯定存在
	//返回数据给客户端
	return info
};
async function getAndSetUserAndBSInfo(params, context) {
	if (params == null || JSON.stringify(params) == "{}") {
		return {
			errSubject: 'param_lack',
			errCode: 0,
			errMsg: '参数不齐'
		}
	}
	let data = {};
	// db.collection(dbCollectionName).doc(params.create_opneid).update(value).then((res)
	await db.collection(userDBName).where({
		openid: params.userKey
	}).get().then((res) => {
		// res 为数据库查询结果
		if (res.data.length > 0) {
			data = res.data[0]
		} else {
			console.log('不存在');
		}
	}).catch((err) => {
		// err.message 错误信息
		// err.code 错误码
	})

	let result = {
		// 1普通用户，2商户
		userType: 1,
		// 用户信息
		userInfo: {},
		// 商户信息
		businessInfo: {}
	}
	// userInfo
	if (data == undefined || data == null || JSON.stringify(data) == "{}") {
		// 添加
		let userInfo = {
			user_id: params.generateKey,
			openid: params.userKey,
			user_name: params.generateName,
			zhb_num: 0,
			head_pic: '',
			red_wallet: 0,
			login_plate: params.login_plate,
			create_time: Date.now(),
			update_time: Date.now()
		}
		await db.collection(userDBName).add(userInfo).then((res) => {
			console.log('添加完成：' + JSON.stringify(res));
			result.userType = 1
			result.userInfo = res
			result.businessInfo = null

		})
		// 如果只有id则需要查询
		if (result.userInfo.user_id == null || result.userInfo.user_id == undefined) {
			await db.collection(userDBName).doc(result.userInfo.id).get().then((userInfoRes) => {
				console.log('userInfoRes:' + JSON.stringify(userInfoRes));
				result.userInfo = userInfoRes.data[0]
			})
		}
	} else {
		// 已存在于user表。无需添加
		result.userInfo = data
		result.userInfo._id = null
		// 查询是否在business表中
		let bsData = {}
		let bsParam = {}
		console.log('context.platform:' + context.PLATFORM);
		if (context.PLATFORM == null || context.PLATFORM == '') {
			console.log('unkonwn plat');
			return result;
		}
		if (context.PLATFORM.toLowerCase() == 'mp-weixin'.toLowerCase()) {
			// 微信登录
			bsParam.create_wx_openid = params.userKey
		} else if (context.PLATFORM.toLowerCase() == 'mp-alipay'.toLowerCase()) {
			// 支付宝登录
			bsParam.create_alipay_openid = params.userKey
		}
		await db.collection(businessDBName).where(bsParam).get().then((res) => {
			// res 为数据库查询结果
			// console.log('businessinfo:' + JSON.stringify(res));
			if (res.data.length > 0) {
				bsData = res.data[0]
			} else {
				console.log('不存在');
			}
			// let resData = res.result.data[0]
			// that.businessInfo = resData
		}).catch((err) => {
			// err.message 错误信息
			// err.code 错误码
		})
		// businessInfo
		if (bsData == undefined || bsData == null || JSON.stringify(bsData) == "{}") {
			// 不存在
			console.log(params.userKey + '不存在business');
		} else {
			// 存在
			result.businessInfo = bsData
			result.businessInfo._id = null
			result.userType = 2
		}
	}
	return result;
}